Amazon CodeCatalystがカスタムブループリントをサポートしました
Amazon CodeCatalystでカスタムブループリントが使えるようになりました。
Announcing custom blueprints for Amazon CodeCatalyst
そもそもブループリントとは
プロジェクトのテンプレートです。GitHubで言うところの、テンプレートリポジトリ機能のようなものです。
ソースコードやCI/CDワークフローをテンプレート化することができます。
この機能を利用することで、利用者はより早くアプリケーション開発を始めることができます。
以下のようにプロジェクト作成時に選択することができます。
Blueprints in CodeCatalyst - Amazon CodeCatalyst
カスタムブループリント
これまでは、AWSが提供するブループリントを使うのみでしたが、ユーザーが独自で作成可能になりました。
組織に適したブループリントを作成できます。
現時点では機能を利用するために、Enterprise Tierが必要です。
1ユーザーあたり20USD/月の費用が発生します。Enterprise Tierへの変更手順は以下です。
やってみた
チュートリアルが用意されています。細かい手順はチュートリアルを参照いただくとして、スクショを交えてざっくり手順を説明します。
チュートリアル: React アプリケーションの作成と適用 - Amazon CodeCatalyst
カスタムブループリントの作成
以下のように必要な項目を設定して、ブループリントを作成します。
作成するとプロジェクトができます。デフォルトで入っているファイルは、スペース内へのブループリント公開用のものです。
CodeCatalystのDev EnvironmentでCloud9を開いて、コードを編集しPushしました。
ブループリントの公開・カタログに追加
コードをPushすると、ブループリントリリース用のワークフローが自動で実行されます。
ワークフローファイルは以下の内容です。
Name: blueprint-release SchemaVersion: "1.0" Triggers: - Type: PUSH Branches: - main - Type: MANUAL Actions: check_commit: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Outputs: AutoDiscoverReports: Enabled: false Variables: - IS_RELEASE_COMMIT Configuration: Steps: - Run: TRIGGER_COMMIT_ID=$CATALYST_EVENT_SHA - Run: COMMIT_MESSAGE="$(git log -n 1 $TRIGGER_COMMIT_ID --oneline)" - Run: RELEASE_PREFIX='chore(release):' - Run: IS_RELEASE_COMMIT=false - Run: if grep -q "$RELEASE_PREFIX" <<< "$COMMIT_MESSAGE"; then echo 'this is a release commit' && IS_RELEASE_COMMIT=true; fi build_and_commit: Identifier: aws/build@v1 Inputs: Sources: - WorkflowSource Variables: - Name: IS_RELEASE_COMMIT Value: ${check_commit.IS_RELEASE_COMMIT} Outputs: AutoDiscoverReports: Enabled: false Artifacts: - Name: codebase Files: - "**/*" Configuration: Steps: - Run: if $IS_RELEASE_COMMIT; then echo 'This is a release commit, skipping'; else chmod +x release.sh && ./release.sh; fi DependsOn: - check_commit publish_blueprint: Identifier: aws/publish-blueprint-action@v1 Inputs: Artifacts: - codebase Variables: - Name: IS_RELEASE_COMMIT Value: ${check_commit.IS_RELEASE_COMMIT} DependsOn: - build_and_commit Configuration: ArtifactPackagePath: dist/js/*.tgz PackageJSONPath: package.json InputArtifactName: codebase TimeoutInSeconds: "120"
この時点で、スペースに公開されます。
しかし、プロジェクト作成時のブループリントには表示されない状態です。カタログに追加を行うことで、選択可能になります。
バージョンを指定して、カタログに追加します。
カスタムブループリントを使ってプロジェクト作成
先ほどのブループリントが、選択可能になっているため選択してプロジェクトを作成します。(プロジェクト名は、react-app-project
とします)
ブループリントを更新し、プロジェクトを更新する
ブループリントの更新を試してみます。ブループリント側にファイルを追加して、使用しているプロジェクトでどう反映されるかみていきます。
ブループリント側を更新します。static-assets
配下にhello-world.txt
を追加して、Pushしました。
先ほどと同様に、Pushのタイミングでワークフローが実行されて、ブループリントのバージョンが更新されます。
カタログに最新のバージョンを追加しておきます。
プロジェクト側の更新を行います。
プロジェクト側を見ると、v0.0.1
を使っておりv0.0.2
にアップデートできることが分かります。
Updata Version
を選択します。
更新の適用を行うとPull Requestが作成されます。Pull Request内にはアップデート内容(hello-world.txt)が含まれていることがわかります。
マージを行えば、プロジェクト側の更新は完了です。
おわりに
CodeCatalystのカスタムブループリントでした。
Typescript書く必要はありますが、プロジェクト作成時のパラメータや含めるファイル等も色々カスタマイズ可能そうでした。
以上、AWS事業本部の佐藤(@chari7311)でした。